1. Field of the Invention
This invention relates to circular dependency in object persistence, and particularly to methods, systems, and computer program products for using graphs to solve circular dependency in object persistence.
2. Description of Background
Before our invention, modifying object persistence data stored in a relational database required a complex sequence to determine the proper order of operations to modify dependent objects when circular dependency existed within the relational stricture. This problem is due to the different methods used to maintain referential integrity in object schemas versus database schemas. Referential integrity refers to the concept that if one entity references another, then the referenced entity actually exists. Object schemas define the relationships between objects created using object-oriented programming languages such as Java™, commonly used to develop enterprise applications. Object type, also referred to as a class, defines the characteristics of each object, which may include attributes and methods or function calls that act upon the object or trigger events. Object types often contain dependency relationships to other object types. Objects are typically dynamic instantiations of object types and collectively form an object schema. For objects to be-persistent, that is stored for future use, objects must be mapped from an object schema to a database schema.
A database schema defines the relationships between tables of records organized within a database. Referential integrity of a relational database is typically managed by maintaining a foreign key within a table that corresponds to the primary key of a second table, upon which the first depends. The term “primary key” is used interchangeably with “foreign key reference”, as this is the field to which the foreign key refers. The dependency relationship between the records in each table may be one-to-one, one-to-many, many-to-one, or many-to-many. This relationship between primary and foreign keys can be extended to multiple levels and may include circular dependencies.
When modifying a relational database, the proper order of operations must be adhered to for insertion, deletion, and updates to maintain the referential integrity between the records in each table. For insertion operations, a parent record containing a primary key must be created prior to a child record containing a foreign key. Deletion operations require the reverse sequence.
When mapping objects from an object schema to a database schema, the objects' relationships to each other are maintained in a relational database using foreign key constraints. If object relationships contain circular dependencies, the tasks of determining the proper sequence of operations and maintaining the relationships upon modification can be quite complex and thus time consuming. What is needed, therefore, is a method to determine the dependency of objects and obtain a minimal dependent object sequence for each object type to reduce the calculation time when circular dependencies exist in persistent objects.